#include <iostream>
#include <vector>
using namespace std;
 
vector<vector<int>> res;
vector<int> path;
int sum = 0;
int n = 0, m = 0;
bool vis[11];
 
void dfs(int i) // 考虑i选还是不选
{
    // cout << "i " << i << " sum " << sum << endl;
    if(sum >= m || i > n)
    {
        if(sum == m)
            res.push_back(path);
        return;
    }
 
    sum += i; // 选
    path.push_back(i);
    vis[i] = true; 
    dfs(i + 1);
    sum -= i; // 回溯
    path.pop_back();
    vis[i] = false;
 
    dfs(i + 1); // 不选！！！！！！！！！
}
 
// 1 2 3 4 5
int main()
{
    cin >> n >> m;
    dfs(1);
 
    for(auto& arr : res)
    {
        for(auto& e : arr)
        {
            cout << e << " ";
        }
        cout << endl;
    }
    return 0;
}